1. Field of the Invention
The present invention generally relates to computer systems and, more particularly, to clocking circuitry used to control the timing of computer components, such as processors, input/output devices, and memory.
2. Description of the Prior Art
The basic structure of a conventional computer system 10 is shown in FIG. 1. The heart of computer system 10 is a central processing unit (CPU) or processor 12 which is connected to several peripheral devices, including input/output (I/O) devices 14 (such as a display monitor and keyboard) for the user interface, a permanent memory device 16 (such as a hard disk or floppy diskette) for storing the computer's operating system and user programs, and a temporary memory device 18 (such as random-access memory or RAM) that is used by processor 12 to carry out program instructions. Processor 12 communicates with the peripheral devices by various means, including a bus 20 or a direct channel 22. Computer system 10 may have many additional components which are not shown, such as serial and parallel ports for connection to, e.g., modems or printers. Those skilled in the art will further appreciate that there are other components that might be used in conjunction with those shown in the block diagram of FIG. 1; for example, a display adapter connected to processor 12 might be used to control a video-display monitor. Various types of device drivers (software programs) are used to control the hardware devices. Computer system 10 also includes firmware 24, whose primary purpose is to seek out and load an operating system from one of the peripherals (usually permanent memory device 16) whenever the computer is first turned on.
Conventional microprocessor systems have dramatically grown in complexity and capability to be the equivalent of the mainframe computer of yesterday. The clocking system has grown in complexity to match the function and high performance now provided by CMOS technology. The clocking system provides a multiplicity of timing signals to the CPU and associated elements such as memory and I/O devices. The clocks define the timing cycle of the data flow of the machine. Some clocks are non-overlapping and serve to isolate one cycle of operation from the next. Some clocks overlap so as to gain a performance advantage by stealing time from the next cycle. The positioning in time of these clocks is very critical for high performance, particularly for superscalar computers that issue multiple instructions simultaneously. For example, many processors have execution units which are "pipelined," or divided into separate stages, such that a single execution unit can actually be performing multiple tasks for different instructions during a single clock cycle, but this requires precise timing. Memory performance considerations (caching, snooping, etc.) also require fairly exact timing signals.
If clock circuitry, which provides the timing signals for a computer, has a latent defect, it can be difficult to detect. Conventional computers do not have the ability to adjust the timing of these clocks for testing the microprocessor system. This ability is essential to achieving high-performance system designs. It would, therefore, be desirable and advantageous to devise a method of adjusting timing margins and eliminating failing conditions should the clock circuity contain a timing defect.